package com.bytezreo.duotai;
/**
 * 
 * @Description    面向对象的特征三 ------多态性
 * @author  Bytezero·zhenglei!      Email:420498246@qq.com
 * @version
 * @date 2021年9月20日下午4:56:10
 * @
 * 
 * 
 * 1.理解多态性：  可以理解为一个事物的多态性 
 * 2.何为多态性：  父类的引用指向子类的对象（或子类的对象赋给父类的引用）
 *
 * 3.多态的使用：虚拟方法调用
 * 有了对象的多态性的以后，我们在编译器期，只能调用父类中声明的方法，但是
 * 在运行期，我们实际执行的是 子类重写父类的方法。
 * 
 *  总结：编译，看左边，执行看右边
 *  
 * 4.多态性的使用前提：(1)类的继承关系  (2) 要有方法的重写
 *
 * 5.对象的多态性，适用于方法，不适用于属性(属性：编译和运行都只看左边)
 *
 * 6.多态性是运行时行为;        
 * 
 * 7.动态绑定
 */
public class PersonTest 
{
	public static void main(String[] args) 
	{
		Person p1 = new Person();
		p1.eat();
		
		
		Man man = new Man();
		man.eat();
		man.age = 25;
		man.makeMoney();
		
		/***********************/
		System.out.println("----------------------------");
		//对象多态性：父类的引用指向子类的对象
		Person p2 = new Man();
		
		//多态的使用：当调用子父类同名同参的方法时，实际执行的是子类重写父类的
	//方法---虚拟方法调用
		p2.eat();    //子类的
		p2.walk();
		
		
		//p2.makeMoney();
		
		
		
		
//		Person p3 = new Woman();
		
		System.out.println(p2.id); //1001   父类

		
	}
}






















































